from abc import ABC, abstractmethod

# Abstraction
class Abstraction(ABC):
    @abstractmethod
    def operation(self):
        pass

# RefinedAbstraction
class RefinedAbstraction(Abstraction):
    def operation(self):
        print("Refined Abstraction operation")

# Implementor
class Implementor(ABC):
    @abstractmethod
    def operationImpl(self):
        pass

# ConcreteImplementorA
class ConcreteImplementorA(Implementor):
    def operationImpl(self):
        print("ConcreteImplementorA operationImpl")

# ConcreteImplementorB
class ConcreteImplementorB(Implementor):
    def operationImpl(self):
        print("ConcreteImplementorB operationImpl")

# Client
class Client:
    def __init__(self, abstraction: Abstraction, implementor: Implementor):
        self.abstraction = abstraction
        self.implementor = implementor

    def execute(self):
        self.abstraction.operation()
        self.implementor.operationImpl()

# Usage
client = Client(RefinedAbstraction(), ConcreteImplementorA())
client.execute()